package com.shell.qq;

import android.content.Context;
import android.content.SharedPreferences;

import java.io.*;
import java.nio.charset.StandardCharsets;

//保存数据的类。
public class UserInfo implements Serializable {
    private User user=null;
    SharedPreferences sharedPreferences=null;
    private static final String SHARED_NAME="userInfo";//指定文件名
    private static final String FILE_NAME="userInfo.txt";//文件存储（内部存储）方式保存的文件
    FileInputStream fileInputStream=null;//文件输入流
    FileOutputStream fileOutputStream=null;//文件输出流

    //把用户信息保存到XML文件
    public void saveUserXMLDate(Context context){
        sharedPreferences=context.getSharedPreferences(SHARED_NAME,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putString("username",user.getUsername());
        editor.putString("password",user.getPassword());
        editor.putString("Email", user.getEmail());
        editor.putString("phone", user.getPhone());
        editor.apply();

    }
    //读取XML文件信息
    public void getUserXMLDate(Context context){
        sharedPreferences=context.getSharedPreferences(SHARED_NAME,Context.MODE_PRIVATE);//读数据
        user.setUsername(sharedPreferences.getString("username",""));
        user.setPassword(sharedPreferences.getString("password",""));
        user.setPhone(sharedPreferences.getString("phone",""));
        user.setEmail(sharedPreferences.getString("Email",""));
    }
    //利用文件保存数据（内部存储）
    public void saveUserDateWithFile(Context context) throws IOException {
        String data= user.getUsername()+","+user.getPassword()+","+user.getPhone()+","+user.getEmail();
        fileOutputStream= context.openFileOutput(FILE_NAME,Context.MODE_PRIVATE);//打开文件
        fileOutputStream.write(data.getBytes(StandardCharsets.UTF_8));//将数据写入文件
        fileOutputStream.flush();//清空缓冲区
        fileOutputStream.close();//关闭输出流
    }
    //读取文件数据（内部存储）
    public void getUserDataWithFile(Context context)throws IOException{
        fileInputStream= context.openFileInput(FILE_NAME);//打开文件，常量参数是一个文件名
        byte[] buffer=new byte[fileInputStream.available()];//创建缓冲区，并获取文件长度
        fileInputStream.read(buffer);//将文件内容读取到buffer缓冲区
        String data=new String(buffer);//转换为字符串
        String [] userData=data.split(",");//将字符串分割出来
        user.setUsername(userData[0]);
        user.setPassword(userData[1]);
        user.setPhone(userData[2]);
        user.setEmail(userData[3]);
        fileInputStream.close();//关闭输入流
    }
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    //无参构造可能造成空指针异常，不使用，但必须存在，不能删
    public UserInfo() {
    }

    public UserInfo(User user) {
        this.user = user;
    }
}
